#ifndef PRESENT_BLOCKS_H
#define PRESENT_BLOCKS_H

#include <map>
#include <string>
#include <stdint.h>

class present_blocks
{
    public:
        /** Default constructor */
        present_blocks();
        /** Default destructor */
        virtual ~present_blocks();
        void from_sequence(const std::string&, std::string::size_type, std::string::size_type);
        //void copy(const present_blocks &other);
        void swap(present_blocks &other);
        void reset();
        void next();
        std::string current(const std::string&);
        bool end();
        uint64_t size();
        bool contains(const std::string&);
    protected:
    private:
    std::map<uint64_t, std::string::size_type> *hash_to_position;
    std::map<uint64_t, std::string::size_type>::iterator current_iterator;
    //std::string sequence;
    std::string::size_type length;
};

#endif // PRESENT_BLOCKS_H
